/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.jsysacc.asistencia.model.logic.maestros;

import com.cerd.util.BaseSP01.JUtilBaseSP01;
import com.jsysacc.asistencia.model.beans.maestros.Horario;
import com.jsysacc.asistencia.model.beans.maestros.ControlAsistencia;
import com.jsysacc.asistencia.model.beans.maestros.Personal;
import com.jsysacc.asistencia.model.dao.design.maestros.IDiaFeriadoDAO;
import com.jsysacc.asistencia.model.dao.design.maestros.IControlAsistenciaDAO;
import com.jsysacc.asistencia.model.dao.design.maestros.IPersonalDAO;
import com.jsysacc.asistencia.model.dao.factory.MainDAOFactory;
import java.util.ArrayList;
import org.joda.time.DateTime;

/**
 *
 * @author Carlos
 */
public class ControlAsistencialLogic extends JUtilBaseSP01 {

    IControlAsistenciaDAO controlAsistenciaDAO = MainDAOFactory.getInstance().getControlAsistenciaDAO();
    IPersonalDAO personalDAO = MainDAOFactory.getInstance().getPersonalDAO();
    IDiaFeriadoDAO diaferiadoDAO = MainDAOFactory.getInstance().getDiaFeriadoDAO();

    public ControlAsistencialLogic() {
    }

    public ArrayList<ControlAsistencia> getAll() throws Exception {
        return controlAsistenciaDAO.getAll();
    }

    public ArrayList<ControlAsistencia> getByCriterio(String criterio, String valor) throws Exception {
        return controlAsistenciaDAO.getByCriterio(criterio, valor);
    }

    public ControlAsistencia getByPk(DateTime fecha, String num_ide) throws Exception {
        return controlAsistenciaDAO.getByPk(fecha, num_ide);
    }

    public boolean delete(DateTime fecha, String num_ide) throws Exception {
        return controlAsistenciaDAO.delete(fecha, num_ide);
    }

    public boolean insert(ControlAsistencia entity) throws Exception {
        return controlAsistenciaDAO.insert(entity);
    }

    public boolean update(ControlAsistencia entity) throws Exception {
        return controlAsistenciaDAO.update(entity);
    }

    public boolean existePersonalByNum_ide(String num_ide) throws Exception {
        return personalDAO.existeByNum_ide(num_ide);
    }

    public boolean getExisteDiaFeriado(DateTime fecha) throws Exception {
        return diaferiadoDAO.getExisteDiaFeriado(fecha);
    }
//
//    public String registrarAsistenciaIngresoMan(DateTime fecha, String num_ide, String usu_reg) throws Exception {
//        ControlAsistencia oControlAsistencia = null;
//        //SACAMOS EL PERSONAL
//        Personal oPersonal = personalDAO.getByNum_ide(num_ide);
//        if (_vacio(oPersonal)) {
//            return "NO EXISTE PERSONAL";
//        }
//        HorarioLogic horarioLogic = new HorarioLogic();
//
//        Horario oHorario = horarioLogic.getByPk(oPersonal.getCod_hor());
//
//        if (_vacio(oHorario)) {
//            return "NO EXISTE HORARIO RELACIONADO CON EL TRABAJADOR";
//        }
//
//        String cod_tip_asi = "TA001";
//        String swt_cor = "";
//        DateTime fec_nor = null;
//        DateTime fec_tol = null;
//        int min_tar = 0;
//        //VERIFICAMOS SI ES SABADO
////        if (fecha.getDayOfWeek() == 6) {
//            //
//            String[] hor_man = oHorario.getHor_ini_man_sab().split(":");
//            fec_nor = new DateTime(fecha.getYear(), fecha.getMonthOfYear(), fecha.getDayOfMonth(), toInt(hor_man[0]), toInt(hor_man[1]));
//            fec_tol = new DateTime(fecha.getYear(), fecha.getMonthOfYear(), fecha.getDayOfMonth(), toInt(hor_man[0]), toInt(hor_man[1]) + toInt(oHorario.getTol_man_sab()));
//
//            if (fecha.isAfter(fec_tol)) {
//                cod_tip_asi = "TA002";
//            }
//
//            if (_equiv(oHorario.getHor_cor_sab(), "S")) {
//                swt_cor = "S";
//            }
//
//            min_tar = fecha.getMinuteOfDay()- fec_tol.getMinuteOfDay();
//            if (min_tar < 0) {
//                min_tar = 0;
//            }
//            
//            String hor_ing_man ="";
//            
//            hor_ing_man = PADL(toString(fecha.getHourOfDay()), 2, '0') + ":" + PADL(toString(fecha.getMinuteOfHour()), 2, '0')+ ":"+ PADL(toString(fecha.getSecondOfMinute()), 2, '0');
//            
//            
//            oControlAsistencia = new ControlAsistencia();
//            oControlAsistencia.setNum_ide(num_ide);
//            oControlAsistencia.setFecha(fecha);
//            oControlAsistencia.setCod_hor(oHorario.getCod_hor());
//            oControlAsistencia.setCod_tip_asis(cod_tip_asi);
//            oControlAsistencia.setSwt_cor(swt_cor);
//            oControlAsistencia.setDescrip_hor(oHorario.toStringFull());
//            oControlAsistencia.setHor_ing_man_rea(hor_ing_man);
//            oControlAsistencia.setHor_ing_man(hor_ing_man);
//            oControlAsistencia.setMin_tar_man(min_tar);
//            oControlAsistencia.setMin_tar_tar(0);
//            oControlAsistencia.setUsu_reg(usu_reg);
//            
//            controlAsistenciaDAO.insert(oControlAsistencia);
//
////        } else {
////
////        }
//
//        return "OK";
//    }

}
